/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package controlador;

import controlador.archivos.FiltroFicherosCSV;
import java.io.File;
import java.util.Iterator;
import java.util.List;
import javax.swing.JFileChooser;
import javax.swing.JOptionPane;
import javax.swing.table.DefaultTableModel;
import modelo.Datos;
import modelo.DatosJpaController;
import vista.PrincipalVista;

/**
 *
 * @author Rodrigo Martínez
 */
public class ReportesControlador {
    
    private PrincipalVista principal;    
    private DatosJpaController datosMgr;
    private GeneradorReportesControlador generadorReportes;
    
    public ReportesControlador(PrincipalVista principal){
        this.principal = principal;
        datosMgr = new DatosJpaController();
        generadorReportes = new GeneradorReportesControlador(principal);
    }
    
    public void mostrarReporteGeneral(){
        DefaultTableModel dtm = (DefaultTableModel) principal.generalTable.getModel();
        //Se limpia la tabla
        while (dtm.getRowCount() > 0) {
                dtm.removeRow(0);
        }        
        List datosTodo = datosMgr.findDatosEntities();
        Iterator<Datos> iterator = datosTodo.iterator();
	//Se agregan los registros
        while (iterator.hasNext()) {
                Datos datos = (Datos) iterator.next();
                Object[] nuevoCliente = {datos.getFechaAlta(),datos.getFechaBaja(),
                        datos.getNombreEquipo(),datos.getUsuario(),datos.getDireccionIP(),datos.getDireccionMAC(),
                        datos.getVlan(), datos.getPuerto()};
                dtm.addRow(nuevoCliente); 
        }
        //Se muestra la tabla
        principal.generalReporte.setLocationRelativeTo(null);
        principal.generalReporte.setVisible(true);
    }
    
    public void mostrarReporteUsuariosIPMAC(){
        DefaultTableModel dtm = (DefaultTableModel) principal.usuIPMACTable.getModel();
        //Se limpia la tabla
        while (dtm.getRowCount() > 0) {
                dtm.removeRow(0);
        }        
        List datosTodo = datosMgr.findDatosEntities();
        Iterator<Datos> iterator = datosTodo.iterator();
	//Se agregan los registros
        while (iterator.hasNext()) {
                Datos datos = (Datos) iterator.next();
                Object[] nuevoCliente = {datos.getUsuario(),datos.getDireccionIP(),
                    datos.getDireccionMAC()};
                dtm.addRow(nuevoCliente); 
        }
        //Se muestra la tabla
        principal.usuMACIPIUReporte.setLocationRelativeTo(null);
        principal.usuMACIPIUReporte.setVisible(true);
    }
    
    public void mostrarReporteVLANS(){
        DefaultTableModel dtm = (DefaultTableModel) principal.vlansTable.getModel();
        //Se limpia la tabla
        while (dtm.getRowCount() > 0) {
                dtm.removeRow(0);
        }        
        List datosTodo = datosMgr.findDatosEntities();
        Iterator<Datos> iterator = datosTodo.iterator();
	//Se agregan los registros
        while (iterator.hasNext()) {
                Datos datos = (Datos) iterator.next();
                Object[] nuevoCliente = {datos.getVlan(),datos.getNombreEquipo()};
                dtm.addRow(nuevoCliente); 
        }
        //Se muestra la tabla
        principal.vlansReporte.setLocationRelativeTo(null);
        principal.vlansReporte.setVisible(true);
    }
    
    public void guardarReporteGeneral(){
        JFileChooser fileChooser = new JFileChooser();
        fileChooser.addChoosableFileFilter(new FiltroFicherosCSV());
        fileChooser.setFileFilter(fileChooser.getChoosableFileFilters()[1]);
        fileChooser.getFileFilter().getDescription();
        int seleccion = fileChooser.showSaveDialog(principal);
        if (seleccion == JFileChooser.APPROVE_OPTION) {
            File fichero = fileChooser.getSelectedFile();
            String nombreSelec = fichero.getAbsolutePath();
            File ficheroConExt = new File(nombreSelec + ".csv");
            if (ficheroConExt.exists() || fichero.exists()) {
                int opcion = JOptionPane.showConfirmDialog(principal,
                        "EL ARCHIVO YA EXISTE DESEA REEMPLAZARLO?",
                        "CONFIRMACION",
                        JOptionPane.YES_NO_OPTION);
                if (opcion == JOptionPane.YES_OPTION) {
                    generadorReportes.setArchivo(fichero);
                    generadorReportes.generarReporteGeneral();
                }
            } else {
                generadorReportes.setArchivo(fichero);
                generadorReportes.generarReporteGeneral();
            }
        }        
    }
    
    public void guardarReporteUsuariosIPMAC(){
        JFileChooser fileChooser = new JFileChooser();
        fileChooser.addChoosableFileFilter(new FiltroFicherosCSV());
        fileChooser.setFileFilter(fileChooser.getChoosableFileFilters()[1]);
        fileChooser.getFileFilter().getDescription();
        int seleccion = fileChooser.showSaveDialog(principal);
        if (seleccion == JFileChooser.APPROVE_OPTION) {
            File fichero = fileChooser.getSelectedFile();
            String nombreSelec = fichero.getAbsolutePath();
            File ficheroConExt = new File(nombreSelec + ".csv");
            if (ficheroConExt.exists() || fichero.exists()) {
                int opcion = JOptionPane.showConfirmDialog(principal,
                        "EL ARCHIVO YA EXISTE DESEA REEMPLAZARLO?",
                        "CONFIRMACION",
                        JOptionPane.YES_NO_OPTION);
                if (opcion == JOptionPane.YES_OPTION) {
                    generadorReportes.setArchivo(fichero);
                    generadorReportes.generarReporteUsuIPMAC();
                }
            } else {
                generadorReportes.setArchivo(fichero);
                generadorReportes.generarReporteUsuIPMAC();
            }
        }   
    }
    
    public void guardarReporteVLANS(){
        JFileChooser fileChooser = new JFileChooser();
        fileChooser.addChoosableFileFilter(new FiltroFicherosCSV());
        fileChooser.setFileFilter(fileChooser.getChoosableFileFilters()[1]);
        fileChooser.getFileFilter().getDescription();
        int seleccion = fileChooser.showSaveDialog(principal);
        if (seleccion == JFileChooser.APPROVE_OPTION) {
            File fichero = fileChooser.getSelectedFile();
            String nombreSelec = fichero.getAbsolutePath();
            File ficheroConExt = new File(nombreSelec + ".csv");
            if (ficheroConExt.exists() || fichero.exists()) {
                int opcion = JOptionPane.showConfirmDialog(principal,
                        "EL ARCHIVO YA EXISTE DESEA REEMPLAZARLO?",
                        "CONFIRMACION",
                        JOptionPane.YES_NO_OPTION);
                if (opcion == JOptionPane.YES_OPTION) {
                    generadorReportes.setArchivo(fichero);
                    generadorReportes.generarReporteVLANS();
                }
            } else {
                generadorReportes.setArchivo(fichero);
                generadorReportes.generarReporteVLANS();
            }
        }   
    }
    
    
}
